#ifndef _VN_SFML_RECTANGLE_SHAPE_H_
#define _VN_SFML_RECTANGLE_SHAPE_H_

#include "SFMLDrawable.h"
#include "RectangleShape.h"

namespace vn
{
	class SFMLRectangleShape : public vn::SFMLDrawable, public vn::RectangleShape
	{
	public:
		SFMLRectangleShape(float p_layer);
		virtual ~SFMLRectangleShape(void);

		virtual void draw(sf::RenderWindow&);
		virtual void draw(sf::RenderTexture&);

		virtual void setSize(const vn::Vector2&);
		virtual void setFillColor(const vn::Color&);
		virtual void setOutlineColor(const vn::Color&);
		virtual void setOutlineThickness(float);
		virtual void setPosition(float, float);
		virtual void setPosition(const vn::Vector2&);
		virtual void setRotation(float);
		virtual void setScale(const vn::Scale&);
		virtual void setScale(float, float);
		virtual void setOrigin(float, float);
		virtual void setOrigin(const vn::Vector2&);
		virtual void setDoRender(bool p_value);

		virtual const vn::Color& getFillColor();
		virtual const vn::Color& getOutlineColor();
		virtual float getOutlineThickness();
		virtual const vn::Vector2& getPosition();
		virtual const vn::Scale& getScale();
		virtual const vn::Vector2& getOrigin();
		virtual const vn::Vector2& getSize();

	protected:
		vn::Vector2 m_origin;
		vn::Vector2 m_position;
		vn::Vector2 m_size;
		vn::Color m_fillColor;
		vn::Color m_outLineColor;
		vn::Scale m_scale;
		float m_outLineThickness;
		sf::RectangleShape m_rectangleShape;
	};
}

#endif // _VN_SFML_RECTANGLE_SHAPE_H_